package com.ljy.my_study.lintcode.z字形变换;
/** 
* @author James
* @date 2018年5月23日 
*/
public class Solution {
	public static void main(String[] args) {
		System.out.println(convert("sdflskdglsg",2));
	}
	
	public static String convert(String s,int row) {
		if(s==null||s.length()<=0) {
			return s;
		}
		if(row<=1) {
			return s;
		}
		//一个来回数量是：
		int num=2*row-2;
		//整条的数目是：
		int a=row;
		//除了整条的其余数目是：
		int b=row-2;
		int len=s.length();
		//打横有多少列
		int m=len/num;
		if(len%num-row<=0) {
			m=m*(1+b)+1;
		}else {
			m=m*(1+b)+(len%num)-(row-1);
		}
		//创建一个二维数组
		char[][] arr=new char[row][m];
		//打横的索引
		int mIndex=0;
		//一个来回中的某个数
		int numIndex=0;
		char[] charArr=s.toCharArray();
		for(int i=0;i<charArr.length;i++) {
			if(numIndex<row) {
				arr[numIndex][mIndex]=charArr[i];
			}else if(numIndex>=row) {
				mIndex++;
				arr[num-numIndex][mIndex]=charArr[i];
			}
			numIndex++;
			if(numIndex==num) {
				numIndex=0;
				mIndex++;
			}
		}
		char[] outputCharArr=new char[len];
		int oIndex=0;
		for(int i=0;i<arr.length;i++) {
			for(int j=0;j<arr[0].length;j++) {
				System.out.print(arr[i][j]+"	");
				if((int)arr[i][j]!=0) {
					outputCharArr[oIndex]=arr[i][j];
					oIndex++;
				}
			}
			System.out.println();
		}
		return String.valueOf(outputCharArr);
	}
}
